package tables

// idp 模块下的全部log信息，前4个字段是一样的，都是id、clientId、CreatedAt、Content
// 后面是需要进行比对的信息，也就是变化了需要记录警告的信息

type IdpLogBase struct {
	Id        int64  `json:"id,string" gorm:"primaryKey"`
	ClientId  int64  `json:"clientId,string"`
	CreatedAt int64  `json:"createdAt,string"`
	Content   string `json:"content"`
}

type IdpLogCpu struct {
	IdpLogBase
	Name        string `json:"name"`        // eg :Intel(R) Core(TM) i5-9400 CPU @ 2.90GHz 处理器的名称
	ProcessorId string `json:"processorId"` // eg:"BFEBFBFF000906ED",描述处理器功能的处理器的信息,CPUID
}

func (r *IdpLogCpu) TableName() string {
	return "idp_log_cpu"
}

type MemorySummarize struct {
	Serial   string `json:"serial"`
	Capacity uint64 `json:"capacity"` // eg:8589934592 ，获取内存容量, / 1024*1024*1024 才能换算成GB
}

type IdpLogMemory struct {
	IdpLogBase
	TotalSize int64  `json:"totalSize,string"` //内存总字节数
	Num       int    `json:"num"`              //内存条数
	Details   string `json:"details"`          // MemorySummarize 的json字符串，考虑到数据库兼容性问题，部分数据库是不支持json格式的，因此使用string
}

func (r *IdpLogMemory) TableName() string {
	return "idp_log_memory"
}

type DiskSummarize struct {
	Serial   string `json:"serial"`
	Capacity uint64 `json:"capacity"` // eg:8589934592 ，获取内存容量, / 1024*1024*1024 才能换算成GB
}

type IdpLogDisk struct {
	IdpLogBase
	TotalSize int64  `json:"totalSize,string"`
	Num       int    `json:"num"`
	Details   string `json:"details"` // DiskSummarize 的json字符串
}

func (r *IdpLogDisk) TableName() string {
	return "idp_log_disk"
}

type IdpLogBoard struct {
	IdpLogBase
	Serial string `json:"serial"`
}

func (r *IdpLogBoard) TableName() string {
	return "idp_log_board"
}

type IdpLogSysAbstract struct {
	IdpLogBase
	Caption      string `json:"caption"`      // eg:Microsoft Windows 10 专业版 , 系统标题
	Version      string `json:"version"`      // eg:10.0.19043 ,系统版本号
	SerialNumber string `json:"serialNumber"` // eg:00330-80191-48344-AA161, 操作系统产品序列号。
}

func (r *IdpLogSysAbstract) TableName() string {
	return "idp_log_sys_abstract"
}

type IdpLogApp struct {
	IdpLogBase
}

func (r *IdpLogApp) TableName() string {
	return "idp_log_app"
}

type IdpAppChangeLog struct {
	Id              int64  `json:"id,string"`
	ClientId        int64  `json:"clientId,string"`
	CreatedAt       int64  `json:"createdAt,string"`
	DisplayName     string `json:"displayName"`
	DisplayVersion  string `json:"displayVersion"`
	InstallLocation string `json:"installLocation"`
	Publisher       string `json:"publisher"`
	InstallDate     string `json:"installDate"`
	Change          string `json:"change"` // 初始记录、新增、移除
}

func (r *IdpAppChangeLog) TableName() string {
	return "idp_log_app_change"
}
